#ifndef OCK_MEMORY_BRIDGE_OCK_ACLADAPTER_OCK_HMM_TRAFFIC_INFO_H
#define OCK_MEMORY_BRIDGE_OCK_ACLADAPTER_OCK_HMM_TRAFFIC_INFO_H
#include <memory>
#include <ostream>
#include <chrono>
#include "ock/hmm/mgr/OckHmmHMObject.h"
#include "ock/acladapter/data/OckMemoryCopyKind.h"

namespace ock {
namespace acladapter {

struct OckHmmTrafficInfo {
    OckHmmTrafficInfo(hmm::OckHmmDeviceId deviceId, uint64_t movedBytes, OckMemoryCopyKind copyKind,
        const std::chrono::steady_clock::time_point &startTime);
    hmm::OckHmmDeviceId deviceId;
    uint64_t movedBytes;
    OckMemoryCopyKind copyKind;
    std::chrono::steady_clock::time_point startTime;
    std::chrono::steady_clock::time_point endTime;
};

bool operator==(const OckHmmTrafficInfo &lhs, const OckHmmTrafficInfo &rhs);
bool operator!=(const OckHmmTrafficInfo &lhs, const OckHmmTrafficInfo &rhs);
std::ostream &operator<<(std::ostream &os, const OckHmmTrafficInfo &data);

}
}
#endif